package util.assembly;

import java.util.HashSet;
import java.util.Set;

import bo.Cliente;
import bo.Entrega;
import bo.Factura;
import bo.ItemFactura;
import bo.Venta;
import bo.historico.VentaHistorico;
import bo.historico.VentaProductosHistorico;

public class VentaHistoricoAssembly {

	
	public static VentaHistorico toHistorico(Venta venta) {
		
		VentaHistorico ventaHistorico = new VentaHistorico();
		
		// Venta
		ventaHistorico.setIdVenta(venta.getId());
		ventaHistorico.setRetiro(venta.getRetiro()); 	 	
		ventaHistorico.setEstado(venta.getEstado());
		ventaHistorico.setFecha(venta.getFecha());
		
		// Cliente
		Cliente cliente = venta.getCliente();
		if (cliente != null) {
			ventaHistorico.setIdCliente(cliente.getId());
			ventaHistorico.setNombreCliente(cliente.getNombre());
			ventaHistorico.setApellidoCliente(cliente.getApellido());
			ventaHistorico.setNacimientoCliente(cliente.getNacimiento());
			ventaHistorico.setTelefonoCliente(cliente.getTelefono());
			ventaHistorico.setEmailCliente(cliente.getEmail());
			ventaHistorico.setDniCliente(cliente.getDni());
			ventaHistorico.setDireccionCliente(cliente.getDireccion());
			ventaHistorico.setLocalidadCliente(cliente.getLocalidad());
			ventaHistorico.setProvinciaCliente(cliente.getProvincia());
		}
		
		// Entrega
		Entrega entrega = venta.getEntrega();
		if (entrega != null) {
			ventaHistorico.setIdEntrega(entrega.getId());
			ventaHistorico.setEstadoEntrega(entrega.getEstado()); 	
			ventaHistorico.setFechaEntrega(entrega.getFechaEntrega());
			ventaHistorico.setCostoEntrega(entrega.getCosto()); 
			ventaHistorico.setFleteroEntrega(entrega.getFletero());
			ventaHistorico.setContactoEntrega(entrega.getContacto());
			ventaHistorico.setTelefonoEntrega(entrega.getTelefono());
			ventaHistorico.setDireccionEntrega(entrega.getDireccion());
		}
		
		// Factura
		Factura factura = venta.getFactura();
		if (factura != null) {
			ventaHistorico.setIdFactura(factura.getId());
			ventaHistorico.setEstadoFactura(factura.getEstado());
			ventaHistorico.setFechaFactura(factura.getFecha()); 
			ventaHistorico.setNumeroFactura(factura.getNumero());
			ventaHistorico.setTipoFactura(factura.getTipo());
			ventaHistorico.setMontoFactura(factura.getMonto());
			ventaHistorico.setMedioDePagoFactura(factura.getMedioDePago());
		
			// Productos
			Set<VentaProductosHistorico> productos = new HashSet<VentaProductosHistorico>();
			Set<ItemFactura> itemsFactura = factura.getItems();
			if (itemsFactura != null) {
				for (ItemFactura itemFactura : itemsFactura) {
					VentaProductosHistorico producto = VentaProductosHistoricoAssembly.toHistorico(itemFactura);
					productos.add(producto);
				}
				ventaHistorico.setProductos(productos);
			}
		}
		return ventaHistorico;
	}
}
